var pathRequestUrl;
var START_INDEX = 2;
var date_format_string = 'd/m/Y';
var date_sql_format_string = 'Y-m-d';

Ext.onReady(function(){
    Ext.QuickTips.init();
    pathRequestUrl = 'ImportExcelOutput_Data.php';
    
    var partnerRecord = [{
        name: 'partner_id',
        type: 'string'
    }, {
        name: 'partner_number',
        type: 'string'
    }, {
        name: 'partner_name',
        type: 'string'
    }];
    
    var partnerObj = Ext.data.Record.create(partnerRecord);
    
    var storePartner = new Ext.data.Store({
        reader: new Ext.data.JsonReader({
            root: 'data',
            totalProperty: 'count',
            id: 'partner_id'
        }, partnerObj),
        proxy: new Ext.data.HttpProxy({
            url: pathRequestUrl
        }),
        autoLoad: true
    });
    
    storePartner.on('beforeload', function(){
        storePartner.baseParams.action = 'getPartner';
    });
        
    var partnerPriceRecord = [{
        name: 'id',
        type: 'string'
    }, {
        name: 'price',
        type: 'string'
    }];
    
    var partnerPriceObj = Ext.data.Record.create(partnerPriceRecord);
    
    var storePartnerPrices = new Ext.data.Store({
        reader: new Ext.data.JsonReader({
            root: 'data',
            id: 'id'
        }, partnerPriceObj),
        proxy: new Ext.data.HttpProxy({
            url: pathRequestUrl
        }),
        autoLoad: false
    });
    
    storePartnerPrices.on('beforeload', function(){
        storePartnerPrices.baseParams.action = 'getPartnerPrices';
    });
    
    var dataSinger = new Ext.FormPanel({
        frame: true,
        title: 'Import Excel sản lượng hàng tháng của đối tác',
        width: 600,
        renderTo: 'ListOutputTables',
        iconCls: 'form-icon',
        url: pathRequestUrl,
        fileUpload: true,
        items: [{
            xtype: 'hidden',
            id: 'hiddenImportDate',
            name: 'hiddenImportDate'
        }, {
            xtype: 'hidden',
            id: 'hiddenPartnerId',
            name: 'hiddenPartnerId'
        }, {
            xtype: 'hidden',
            id: 'hiddenPartnerPrice',
            name: 'hiddenPartnerPrice'
        }, {
            layout: 'column',
            items: [{
                columnWidth: .5,
                layout: 'form',
                labelWidth: 100,
                items: [{
                    xtype: 'datefield',
                    width: 150,
                    id: 'ImportDate',
                    name: 'ImportDate',
                    fieldLabel: 'Tháng import',
                    format: date_format_string,
                    allowBlank: false,
                    selectOnFocus: true,
                    listeners: {
                        change: function(e){
                        
                        }
                    }
                }]
            }]
        }, new Ext.form.ComboBox({
	    id: 'PartnerValue',
	    name: 'PartnerValue',
	    store: storePartner,
	    fieldLabel: 'Đối tác',
	    forceSelection: true,
	    displayField: 'partner_name',
	    valueField: 'partner_id',
	    allowBlank: false,
	    typeAhead: true,
	    mode: 'local',
	    triggerAction: 'all',
	    emptyText: 'Chọn đối tác',
	    selectOnFocus: true,
	    editable: false,
	    width: 150,
	    minListWidth: 300,
	    lazyRender: true,
	    listeners: {
		select: function(combo, record, index){
		    Ext.getCmp('PartnerPriceValue').setValue('');
		    storePartnerPrices.load({
			params: {partner_id: record.data.partner_id}
		    })
		},
		change: function(e){
		}
	    }
        }), new Ext.form.ComboBox({
	    id: 'PartnerPriceValue',
	    name: 'PartnerPriceValue',
	    store: storePartnerPrices,
	    fieldLabel: 'Chọn giá đối tác',
	    forceSelection: true,
	    displayField: 'price',
	    valueField: 'id',
	    allowBlank: false,
	    typeAhead: true,
	    mode: 'local',
	    triggerAction: 'all',
	    emptyText: 'Chọn giá đối tác',
	    selectOnFocus: true,
	    editable: false,
	    width: 150,
	    minListWidth: 300,
	    lazyRender: true
	}), {
            width: 400,
            xtype: 'fileuploadfield',
            id: 'fileupload',
            emptyText: 'Chọn excel file',
            fieldLabel: 'Chọn file',
            name: 'fileupload',
            allowBlank: false,
            //accept: 'vnd.ms-excel',
            buttonCfg: {
                text: '',
                iconCls: 'upload-icon'
            },
            allowBlank: false,
            anchor: '95%'
        }, {
            xtype: 'radiogroup',
            fieldLabel: 'Loại sheet',
            width: 300,
            items: [{
                boxLabel: 'Một sheet',
                name: 'SheetType',
                inputValue: 1,
                checked: true
            }, {
                boxLabel: 'Nhiều sheet',
                name: 'SheetType',
                inputValue: 2
            }],
            listeners: {
                change: function(e){
                    if (e.getValue().inputValue == 1) {
                        Ext.getCmp('SheetIndex').setValue(0);
                        Ext.getCmp('SheetIndex').setDisabled(true);
                    }
                    else {
                        Ext.getCmp('SheetIndex').setDisabled(false);
                    }
                }
            }
        }, {
            xtype: 'numberfield',
            labelStyle: 'width:120',
            width: 90,
            name: 'SheetIndex',
            id: 'SheetIndex',
            fieldLabel: 'Sheet thứ',
            disabled: true,
            value: 0,
            allowBlank: false,
            minValue: 0
        }, {
            xtype: 'numberfield',
            labelStyle: 'width:120',
            width: 90,
            name: 'StartRow',
            id: 'StartRow',
            fieldLabel: 'Dòng bắt đầu',
            value: START_INDEX,
            allowBlank: false,
            minValue: 0
        }, {
            xtype: 'numberfield',
            labelStyle: 'width:120',
            width: 90,
            name: 'SongNumberCol',
            id: 'SongNumberCol',
            fieldLabel: 'Cột mã bài hát',
            value: 3,
            allowBlank: false,
            minValue: 0
        }, {
            xtype: 'numberfield',
            labelStyle: 'width:120',
            width: 90,
            name: 'QuantityCol',
            id: 'QuantityCol',
            fieldLabel: 'Cột sản lượng',
            value: 7,
            allowBlank: false,
            minValue: 0
        }, {
            xtype: 'textarea',
            width: 480,
            height: 180,
            id: 'description',	
			name: 'description',		
            selectOnFocus: true,
            fieldLabel: 'Kết quả',
			editable: false
        }],
        buttons: [{
            text: 'Đồng ý',
            handler: function(){
                if (!dataSinger.getForm().isValid()) {
                    return;
                }
                try {
                    Ext.getCmp('hiddenPartnerId').setValue(Ext.getCmp('PartnerValue').getValue());
		    Ext.getCmp('hiddenPartnerPrice').setValue(Ext.getCmp('PartnerPriceValue').getRawValue());
                    Ext.getCmp('hiddenImportDate').setValue(Ext.getCmp('ImportDate').getValue().dateFormat(date_sql_format_string));
                    dataSinger.getForm().submit({
                        method: 'POST',
                        success: function(f, a){
                            var result = Ext.util.JSON.decode(a.response.responseText);
                            msg('Thông tin', result.msg.content, Ext.MessageBox.INFO);
							Ext.getCmp('description').setValue(
								"+Số dòng đã xử lí: " + result.msg.affectRecord + "\n" + 
								"+Tổng số lỗi: " + result.msg.tongsoloi + "\n" + 
								"+Chi tiết lỗi: \n" + 
									"\t-Không tìm thấy bài hát: " + result.msg.sobaikhongco + "\n" + 
									"\t-Chi tiết: " + result.msg.baihatkhongco + "\n" +
									"\t-Dòng lỗi: " + result.msg.sodongloi + "\n" + 
									"\t-Chi tiết: " + result.msg.dongloi);
                        },
                        failure: function(f, a){
                            var result = Ext.util.JSON.decode(a.response.responseText);
                            msg('Lỗi', result.msg.error, Ext.MessageBox.ERROR);
                        }
                    });
                    execWithProgress('Đang trong quá trình xử lí.');
                } 
                catch (e) {
                    console.debug(e);
                }
            }
        }, {
            text: 'Hủy'
        }]
    });
});
